// packageA/payPage/payPage.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        navHeight: wx.getStorageSync('navHeight') ? wx.getStorageSync('navHeight') : 88,
        number: 2,
        checked: false,
        radio: '1',
        // 订单信息
        orderInfo: {
            roomName: '云来苑住宿',
            hotelName: '山居民宿',
            checkInDate: '',
            checkOutDate: '',
            nights: 0,
            totalPrice: 0,
            originalPrice: 0
        },
        // 支付状态
        paymentLoading: false,
        // 支付方式列表
        paymentMethods: [
            {
                id: '1',
                name: '微信支付',
                icon: 'https://image.shengxuankj.com/fronts/weChat.png',
                enabled: true
            }
        ]
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 接收从房间页面传递的订单信息
        if (options.orderData) {
            try {
                const orderData = JSON.parse(decodeURIComponent(options.orderData));
                this.setData({
                    orderInfo: {
                        ...this.data.orderInfo,
                        ...orderData
                    }
                });
            } catch (error) {
                console.error('解析订单数据失败:', error);
                this.showErrorAndGoBack('订单信息错误');
            }
        } else {
            // 如果没有订单信息，返回上一页
            this.showErrorAndGoBack('缺少订单信息');
        }
    },

    onClick(event) {
        const name = event.currentTarget.dataset.name;
        this.setData({ radio: name });
    },
    onChange(event) {
        this.setData({ radio: event.detail });
    },
    
    // 显示错误信息并返回
    showErrorAndGoBack(message) {
        wx.showToast({
            title: message,
            icon: 'error',
            duration: 2000
        });
        setTimeout(() => {
            wx.navigateBack();
        }, 2000);
    },
    
    // 创建订单
    async createOrder() {
        try {
            // 这里应该调用后端API创建订单
            // 模拟API调用
            const orderData = {
                roomName: this.data.orderInfo.roomName,
                hotelName: this.data.orderInfo.hotelName,
                checkInDate: this.data.orderInfo.checkInDate,
                checkOutDate: this.data.orderInfo.checkOutDate,
                nights: this.data.orderInfo.nights,
                totalPrice: this.data.orderInfo.totalPrice,
                paymentMethod: this.data.radio
            };
            
            // 模拟网络请求
            await new Promise(resolve => setTimeout(resolve, 1000));
            
            // 返回模拟的订单号
            return {
                orderId: 'ORDER_' + Date.now(),
                ...orderData
            };
        } catch (error) {
            console.error('创建订单失败:', error);
            throw new Error('创建订单失败');
        }
    },
    
    // 调用微信支付
    async requestWeChatPay(orderInfo) {
        try {
            // 这里应该调用后端API获取支付参数
            // 模拟获取支付参数
            const paymentParams = {
                timeStamp: String(Date.now()),
                nonceStr: 'random_string_' + Math.random().toString(36).substr(2, 15),
                package: 'prepay_id=mock_prepay_id_' + Date.now(),
                signType: 'RSA',
                paySign: 'mock_pay_sign'
            };
            
            // 调用微信支付API
            return new Promise((resolve, reject) => {
                wx.requestPayment({
                    ...paymentParams,
                    success: (res) => {
                        console.log('支付成功:', res);
                        resolve(res);
                    },
                    fail: (err) => {
                        console.error('支付失败:', err);
                        if (err.errMsg === 'requestPayment:fail cancel') {
                            reject(new Error('用户取消支付'));
                        } else {
                            reject(new Error('支付失败: ' + err.errMsg));
                        }
                    }
                });
            });
        } catch (error) {
            console.error('请求支付失败:', error);
            throw error;
        }
    },
    
    // 处理支付流程
    async handlePayment() {
        if (this.data.paymentLoading) {
            return;
        }
        
        // 验证支付方式
        if (!this.data.radio) {
            wx.showToast({
                title: '请选择支付方式',
                icon: 'error'
            });
            return;
        }
        
        // 验证订单信息
        if (!this.data.orderInfo.totalPrice || this.data.orderInfo.totalPrice <= 0) {
            wx.showToast({
                title: '订单金额错误',
                icon: 'error'
            });
            return;
        }
        
        this.setData({ paymentLoading: true });
        
        try {
            // 显示加载提示
            wx.showLoading({
                title: '正在创建订单...',
                mask: true
            });
            
            // 1. 创建订单
            const orderInfo = await this.createOrder();
            
            wx.hideLoading();
            
            // 2. 根据支付方式处理支付
            if (this.data.radio === '1') {
                // 微信支付
                wx.showLoading({
                    title: '正在调起支付...',
                    mask: true
                });
                
                await this.requestWeChatPay(orderInfo);
                
                wx.hideLoading();
                
                // 支付成功，跳转到支付成功页面
                this.goToPayStatus(true, orderInfo);
            }
        } catch (error) {
            wx.hideLoading();
            
            let errorMessage = '支付失败';
            if (error.message === '用户取消支付') {
                errorMessage = '支付已取消';
            } else if (error.message) {
                errorMessage = error.message;
            }
            
            wx.showToast({
                title: errorMessage,
                icon: 'error',
                duration: 2000
            });
            
            // 如果是支付失败（非用户取消），可以跳转到支付失败页面
            if (error.message !== '用户取消支付') {
                setTimeout(() => {
                    this.goToPayStatus(false, null);
                }, 2000);
            }
        } finally {
            this.setData({ paymentLoading: false });
        }
    },
    
    // 跳转到支付状态页面
    goToPayStatus(success = true, orderInfo = null) {
        const params = {
            success: success ? '1' : '0'
        };
        
        if (orderInfo) {
            params.orderInfo = encodeURIComponent(JSON.stringify(orderInfo));
        }
        
        const queryString = Object.keys(params)
            .map(key => `${key}=${params[key]}`)
            .join('&');
        
        wx.navigateTo({
            url: `/packageA/payStatus/payStatus?${queryString}`
        });
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // 重置支付状态
        this.setData({ paymentLoading: false });
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {
        return {
            title: '山居民宿 - 享受宁静的住宿体验',
            path: '/pages/index/index'
        };
    }
})